import json

from django_redis import get_redis_connection

from apps.users.utils import CookieSecret


def merge_cart_cookie_to_redis(request,user, response):
    '''登陆后合并cookie购物车到数据库
    合并方案：
    3.1 Redis数据库中的购物车数据保留。
    3.2 如果cookie中的购物车数据在Redis数据库中已存在，将cookie购物车数据覆盖Redis购物车数据。
    3.3 如果cookie中的购物车数据在Redis数据库中不存在，将cookie购物车数据新增到Redis。
    '''
    cookie_str = request.COOKIES.get('carts')

    if cookie_str is not None:
        cookie_dict = CookieSecret.loads(cookie_str)
        client = get_redis_connection('carts')
        for sku_id in cookie_dict:
            client.hset(request.user.id, sku_id, json.dumps(cookie_dict[sku_id]).encode())
        response.delete_cookie('carts')